/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BL;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;

/**
 *
 * @author mroque
 */
public class FuncionesAuxiliares {
    public static void escribeMapaAlterno(){
        FileWriter fichero = null;
        PrintWriter pw = null;
        try
        {
            fichero = new FileWriter("c:/prueba.txt");
            pw = new PrintWriter(fichero);
 
            for (int i = 0; i < 10; i++)
                pw.println("Linea " + i);
 
        } catch (Exception e) {
            System.err.println("1)Error en escribeMapaAlterno: " + e);
        } finally {
           try {
           // Nuevamente aprovechamos el finally para
           // asegurarnos que se cierra el fichero.
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              System.err.println("2)Error en escribeMapaAlterno: " + e2);
           }
        }
    }
    
    public static void leerMapas(String pathMaps, String mapsName){
        File archIn = null;
        FileReader fr = null;
        BufferedReader br = null;
 
      try {
         // Apertura del fichero y creacion de BufferedReader para poder
         // hacer una lectura comoda (disponer del metodo readLine()).
         archIn = new File (pathMaps + mapsName);          
         fr = new FileReader (archIn);
         br = new BufferedReader(fr);
 
         String [] strSplit;
         // Lectura del fichero
         String linea;
         while((linea=br.readLine()) != null){
             strSplit = linea.split("-");
             leeEscribeMapa(strSplit[0], strSplit[1], strSplit[2]);            
         }
      }
      catch(Exception e){
         System.err.println("1)Error en leerMapa: " + e);
      }finally{
         // En el finally cerramos el fichero, para asegurarnos
         // que se cierra tanto si todo va bien como si salta
         // una excepcion.
         try{                   
            if( null != fr ){  
               fr.close();    
            }                 
         }catch (Exception e2){
            System.err.println("2)Error en leerMapa: " + e2);
         }
      }
    }
    
    public static void leeEscribeMapa(String pathMap, String mapName, String pathMapOut){
        int factorP = 8;
        int contCol = 0;
        int contFil = 0;
        
        File archIn = null;
        FileReader fr = null;
        BufferedReader br = null;
        FileWriter archOut = null;
        PrintWriter pw = null;
        
        int i, j;
        char car;
        try {
            archIn = new File (pathMap + mapName);
            fr = new FileReader (archIn);
            br = new BufferedReader(fr);
            
            archOut = new FileWriter(pathMapOut + mapName);
            pw = new PrintWriter(archOut);
            
            
             // Lectura del fichero
             int M = Integer.parseInt( br.readLine() );
             int N = Integer.parseInt( br.readLine() );
             for (i = 0; i < M ; i++){
                 contFil++;
                 contCol = 0;
                 for (j = 0; j < N ; j++){
                     contCol ++;

                     car = (char) br.read();
                     pw.print(car);
                     
                     if ((contCol == factorP) && (j + 1) != N){
                         pw.print(" ");
                         contCol = 0;
                     }else{
                         
                     }
                     
                 }
                 br.readLine();
                 pw.println();
                 if ( (contFil == factorP) && (i+1) != M){                     
                     pw.println();
                     contFil = 0;
                 }else{
                 }
             }

        } catch (Exception e) {
            System.err.println("1)Error en leeEscribeMapa: " + e);
        } finally{
            try {
                //Cierra la lectura
                if( null != fr ){  
                    fr.close();    
                }    
                //Cierra la escritura
                if (null != archOut)
                    archOut.close();
                
            } catch (Exception e2) {
                System.err.println("2)Error en leeEscribeMapa: " + e2);                
            }
        }
    }
}
